import store from '@/store'

/**
 * 生成4位随机数字
 * @returns {string} 4位随机数字字符串
 */
export const generateRandom4Digits = () => {
	const min = 1000;
	const max = 9999;
	const randomNum = Math.floor(Math.random() * (max - min + 1)) + min;
	return randomNum.toString();
}


// 限制输入人民币
export const priceInput = (value) => {
	let money_p = store.state?.compsetBaseInfo?.money_p // 金额小位数
	let num_p = store.state?.compsetBaseInfo?.num_p // 数量小位数
	if (value) {
		value = value.replace(/[^\d.]/g, '');

		const parts = value.split('.');
		if (parts.length > 2) {
			value = parts[0] + '.' + parts.slice(1).join('');
		}

		if (parts.length > 1) {
			value = parts[0] + '.' + parts[1].slice(0, Number(money_p) || 2);
		}

		if (value.startsWith('0') && value.length > 1 && !value.includes('.')) {
			value = '0';
		}

		return value;
	} else {
		return '';
	}
}

/**
 * 防抖函数
 * @param {Function} fn 需要防抖的函数
 * @param {number} delay 延迟时间，单位毫秒
 * @returns {Function} 返回防抖后的函数
 */
export function debounce(fn, delay = 300) {
	let timer = null;
	return function (...args) {
		if (timer) {
			clearTimeout(timer);
		}
		timer = setTimeout(() => {
			fn.apply(this, args);
		}, delay);
	};
}


// 将一维数组转换成多维数组  在产品筛选中使用到
export function buildTree(data) {
	const nodeMap = new Map();
	data.forEach(item => {
		nodeMap.set(item.id, {
			value: item.id,
			label: item.title
		});
	});
	// 构建树形结构
	const tree = [];
	data.forEach(item => {
		const node = nodeMap.get(item.id);
		if (item.lever === "1") { // 顶级节点
			tree.push(node);
		} else if (nodeMap.has(item.fid)) { // 子节点
			const parent = nodeMap.get(item.fid);
			if (!parent.children) {
				parent.children = [];
			}
			parent.children.push(node);
		}
	});
	// 按sort字段排序（从小到大）
	function sortByKey(nodes, key = 'sort') {
		nodes.sort((a, b) => parseInt(a[key] || 0) - parseInt(b[key] || 0));
		nodes.forEach(node => {
			if (node.children && node.children.length > 0) {
				sortByKey(node.children, key);
			}
		});
		return nodes;
	}
	return sortByKey(tree);
}

// 获取标签类型/颜色
export const getTagType = (index) => {
	const tagTypes = ['', 'success', 'info', 'warning', 'danger']
	return tagTypes[index % tagTypes.length]
}


// 获取标签类型/颜色 状态1待结算2已结算3可提现4已退回  默认全部
export const statusColor = (value) => {
	console.log("value=", value)
	if (!value) return 'font_black2'
	const statusColor = {
		1: 'font_bule',
		2: 'font_green',
		3: 'font_yellow',
		4: 'font_red'
	}
	return statusColor[Number(value)]
}

// 时间戳转换成年月日
export const toLocaleDateStr = (time) => {
	if (!time) return '--'
	return new Date(time * 1000).toLocaleDateString('zh-CN', {
		year: 'numeric',
		month: '2-digit',
		day: '2-digit'
	}).replace(/\//g, '-')
}


// 时间格式转换函数：将 "25年04月" 转换为 "2025-04"
export const formatTimeString = (timeStr) => {
	if (!timeStr || typeof timeStr !== 'string') return timeStr

	// 匹配 "YY年MM月" 格式
	const match = timeStr.match(/^(\d{2})年(\d{2})月$/)
	if (match) {
		const [, year, month] = match
		// 将两位年份转换为四位年份（假设是20xx年）
		const fullYear = `20${year}`
		// 移除月份前的0（如果有的话）
		const monthNum = parseInt(month, 10)
		return `${fullYear}-${monthNum.toString().padStart(2, '0')}`
	}
	return timeStr
}

// 获取当前日期 格式：yyyy-MM-dd
export const getCurrentDateFormatted = () => {
    const now = new Date();
    const year = now.getFullYear();
    const month = String(now.getMonth() + 1).padStart(2, '0');
    const day = String(now.getDate()).padStart(2, '0');
    return `${year}-${month}-${day}`;
}